home *** CD-ROM | disk | FTP | other *** search
- OPT PPC,NOEXE,NOSTD
-
- PROC Val(s:PTR TO CHAR,n=0)(LONG,LONG)
- DEF num=0,sign=1
- WHILE s[n]="\t" OR s[n]="\n" OR s[n]=" " DO n++
- IF s[n]="-"
- sign:=-1
- n++
- ENDIF
- IF s[n]="%" // BINARY number
- n++
- WHILE s[n]="0" OR s[n]="1"
- num<<=1
- num|=s[n]-"0"
- n++
- ENDWHILE
- ELSEIF s[n]="$" // HEXADECIMAL number
- n++
- WHILE s[n]>="0" AND s[n]<="9"
- num<<=4
- num|=s[n]-"0"
- ELSEWHILE s[n]>="a" AND s[n]<="f"
- num<<=4
- num|=s[n]-"a"+10
- ELSEWHILE s[n]>="A" AND s[n]<="F"
- num<<=4
- num|=s[n]-"A"+10
- ALWAYS
- n++
- ENDWHILE
- ELSE // DECIMAL number
- WHILE s[n]>="0" AND s[n]<="9"
- num*=10
- num+=s[n]-"0"
- n++
- ENDWHILE
- ENDIF
- ENDPROC num*sign,n
-